Artikkelin otsikko
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
Tutustu CSS-säilökyselyihin, responsiivisen suunnittelun seuraavaan kehitysaskeleeseen. Opi luomaan mukautuvia komponentteja säilön koon, ei vain näkymän koon, perusteella.
Responsiivinen suunnittelu on ollut web-kehityksen kulmakivi jo yli vuosikymmenen ajan. Perinteisesti olemme luottaneet mediakyselyihin mukauttaaksemme asetteluja näkymän koon perusteella. Tämä lähestymistapa voi kuitenkin joskus tuntua rajoittavalta, erityisesti monimutkaisten, komponenttipohjaisten suunnitelmien kanssa. Astu esiin, CSS-säilökyselyt – tehokas uusi ominaisuus, joka antaa komponenteille mahdollisuuden mukautua niiden sisältävän elementin koon, ei vain näkymän koon, perusteella.
Säilökyselyt ovat mullistavia, koska ne mahdollistavat elementtipohjaisen responsiivisen suunnittelun. Sen sijaan, että kysyisit "Mikä on näytön koko?", voit kysyä "Kuinka paljon tilaa tällä komponentilla on käytettävissä?" Tämä avaa uusia mahdollisuuksia todella uudelleenkäytettävien ja mukautuvien komponenttien luomiseen.
Ajattele korttikomponenttia, joka voi esiintyä eri yhteyksissä: kapeassa sivupalkissa, leveässä hero-osiossa tai monisarakkeisessa ruudukossa. Mediakyselyillä sinun pitäisi kirjoittaa erityisiä sääntöjä jokaiseen näistä skenaarioista näkymän leveyden perusteella. Säilökyselyillä kortti voi älykkäästi säätää asetteluaan ja tyyliään vanhempansa säilön mittojen perusteella, riippumatta yleisestä näytön koosta.
Säilökyselyt tarjoavat useita keskeisiä etuja perinteisiin mediakyselyihin verrattuna:
Sukelletaan säilökyselyiden käytännön puoliin. Ensimmäinen askel on säilön määrittäminen. Voit tehdä tämän käyttämällä container-type-ominaisuutta vanhempielementissä:
container-type-ominaisuus hyväksyy useita arvoja:
size: Säilökyselyt reagoivat sekä säilön inline- että block-mittoihin.inline-size: Säilökyselyt reagoivat vain säilön inline-mittaan (leveys vaakasuuntaisissa kirjoitustiloissa). Tämä on yleisin ja usein hyödyllisin vaihtoehto.block-size: Säilökyselyt reagoivat vain säilön block-mittaan (korkeus vaakasuuntaisissa kirjoitustiloissa).normal: Elementti ei ole kyselysäilö. Tämä on oletusarvo.style: Säilökyselyt reagoivat tyylikyselyihin ja säilön nimikyselyihin (käsitellään myöhemmin), jolloin voit kysellä säilölle asetettuja mukautettuja ominaisuuksia.Tässä on esimerkki säilön määrittämisestä, joka reagoi sen inline-kokoon:
.card-container {
container-type: inline-size;
}
Voit myös käyttää lyhennettyä container-ominaisuutta määrittääksesi sekä container-type että container-name (josta keskustelemme myöhemmin) yhdellä ilmoituksella:
.card-container {
container: card / inline-size;
}
Tässä tapauksessa 'card' on säilön nimi.
Kun olet määrittänyt säilön, voit käyttää @container-sääntöä kirjoittaaksesi kyselysi. Syntaksi on samanlainen kuin mediakyselyissä, mutta näkymän mittojen sijaan kohdistat säilön mittoihin:
@container card (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
}
.card__content {
width: 50%;
}
}
Tässä esimerkissä kohdistamme "card"-säilöön ja sovellamme tyylejä .card-, .card__image- ja .card__content-elementteihin, kun säilön leveys on vähintään 400px. Huomaa `card` ennen `(min-width: 400px)`. Tämä on ratkaisevaa, kun olet nimennyt säilösi käyttämällä `container-name`- tai lyhennettyä `container`-ominaisuutta.
Jos et ole nimennyt säilöäsi, voit jättää säilön nimen pois:
@container (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
}
.card__content {
width: 50%;
}
}
Voit käyttää samaa valikoimaa mediaominaisuuksia, jotka ovat saatavilla mediakyselyissä, kuten min-width, max-width, min-height, max-height ja orientaatio.
Säilöjen nimeäminen voi olla hyödyllistä, erityisesti sisäkkäisten säilöjen tai monimutkaisten asettelujen kanssa. Voit antaa säilölle nimen käyttämällä container-name-ominaisuutta:
.card-container {
container-name: card;
container-type: inline-size;
}
Sitten säilökyselyissäsi voit kohdistaa säilöön sen nimen perusteella:
@container card (min-width: 400px) {
/* Tyylit 'card'-säilölle */
}
Säilöjen tyylikyselyt (Container Style Queries) antavat sinun reagoida säilösi tyyliin sen koon sijaan. Tämä on erityisen tehokasta yhdistettynä mukautettuihin ominaisuuksiin. Ensin sinun on määritettävä säilösi container-type: style -arvolla:
.component-container {
container-type: style;
}
Sitten voit käyttää @container style(--theme: dark) kyselläksesi mukautetun ominaisuuden --theme arvoa:
.component-container {
--theme: light;
}
@container style(--theme: dark) {
.component {
background-color: black;
color: white;
}
}
Tämä antaa komponenteillesi mahdollisuuden mukautua CSS:n kautta asetetun konfiguraation perusteella näkymän koon sijaan. Tämä avaa upeita mahdollisuuksia teemoitukselle ja dynaamiselle tyylittelylle.
Katsotaan joitakin konkreettisia esimerkkejä siitä, miten säilökyselyitä voidaan käyttää tosielämän tilanteissa:
Kuvittele korttikomponentti, joka näyttää tietoja tuotteesta. Kapeassa säilössä haluaisimme ehkä pinota kuvan ja sisällön pystysuunnassa. Leveämmässä säilössä voimme näyttää ne vierekkäin.
HTML:
CSS:
.card-container {
container-type: inline-size;
}
.card {
display: flex;
flex-direction: column;
border: 1px solid #ccc;
padding: 16px;
}
.card__image {
width: 100%;
margin-bottom: 16px;
}
.card__content {
width: 100%;
}
@container (min-width: 400px) {
.card {
flex-direction: row;
}
.card__image {
width: 50%;
margin-bottom: 0;
}
.card__content {
width: 50%;
}
}
Tässä esimerkissä kortti näyttää aluksi kuvan ja sisällön pystysuunnassa pinottuna. Kun säilön leveys saavuttaa 400px, kortti vaihtaa vaakasuuntaiseen asetteluun.
Harkitse navigaatiovalikkoa, jonka on mukauduttava käytettävissä olevan tilan mukaan. Kapeassa säilössä (esim. mobiilisivupalkissa) haluaisimme ehkä näyttää valikon kohteet pystysuorassa luettelossa. Leveämmässä säilössä (esim. työpöydän ylätunnisteessa) voimme näyttää ne vaakasuunnassa.
HTML:
CSS:
.nav-container {
container-type: inline-size;
}
.nav {
list-style: none;
padding: 0;
margin: 0;
}
.nav__item {
margin-bottom: 8px;
}
.nav__item a {
display: block;
padding: 8px 16px;
text-decoration: none;
color: #333;
}
@container (min-width: 600px) {
.nav {
display: flex;
}
.nav__item {
margin-right: 16px;
margin-bottom: 0;
}
.nav__item a {
display: inline-block;
}
}
Tässä esimerkissä navigaatiovalikko näyttää aluksi kohteet pystysuorassa luettelossa. Kun säilön leveys saavuttaa 600px, valikko vaihtaa vaakasuuntaiseen asetteluun.
Kuvittele artikkelin asettelu, jonka on mukauduttava sen sijoituspaikan mukaan. Jos se on pienessä esikatseluosiossa, kuvan tulisi olla tekstin yläpuolella. Jos se on pääartikkeli, kuva voi olla sivulla.
HTML
Artikkelin otsikko
Lorem ipsum dolor sit amet, consectetur adipiscing elit...
CSS
.article-container {
container-type: inline-size;
}
.article {
display: flex;
flex-direction: column;
}
.article-image {
width: 100%;
margin-bottom: 10px;
}
.article-content {
width: 100%;
}
@container (min-width: 768px) {
.article {
flex-direction: row;
}
.article-image {
width: 40%;
margin-right: 20px;
margin-bottom: 0;
}
.article-content {
width: 60%;
}
}
Selainyhteensopivuus säilökyselyille on nyt erinomainen kaikissa moderneissa selaimissa, mukaan lukien Chrome, Firefox, Safari ja Edge. On tärkeää tarkistaa Can I Use -sivustolta uusimmat selainyhteensopivuustiedot, koska ominaisuudet ja toteutustiedot voivat kehittyä.
Vaikka säilökyselyt tarjoavat tehokkaan vaihtoehdon mediakyselyille, on tärkeää ymmärtää, milloin kukin lähestymistapa on sopivin.
Monissa tapauksissa käytät todennäköisesti sekä mediakyselyiden että säilökyselyiden yhdistelmää. Käytä mediakyselyitä sovelluksesi yleisen asettelun luomiseen ja käytä sitten säilökyselyitä hienosäätämään yksittäisten komponenttien ulkonäköä ja käyttäytymistä kyseisessä asettelussa.
CSS-säilökyselyt edustavat merkittävää edistysaskelta responsiivisen suunnittelun evoluutiossa. Mahdollistamalla elementtipohjaisen responsiivisuuden ne antavat kehittäjille vallan luoda joustavampia, uudelleenkäytettävämpiä ja ylläpidettävämpiä komponentteja. Selainyhteensopivuuden jatkuvasti parantuessa säilökyselyistä on tulossa olennainen työkalu jokaisen web-kehittäjän työkalupakkiin.
Kun toteutat säilökyselyitä globaalille yleisölle, ota huomioon seuraavat seikat:
inline-start ja inline-end, fyysisten ominaisuuksien, kuten left ja right, sijaan.em, rem) varmistaaksesi, että tekstisi skaalautuu asianmukaisesti.CSS-säilökyselyt ovat tehokas työkalu todella responsiivisten ja mukautuvien verkkosovellusten rakentamiseen. Hyväksymällä elementtipohjaisen responsiivisen suunnittelun voit luoda komponentteja, jotka mukautuvat saumattomasti eri konteksteihin, yksinkertaistavat koodiasi ja parantavat yleistä käyttäjäkokemusta. Selainyhteensopivuuden jatkaessa kasvuaan säilökyselyistä on tulossa perustavanlaatuinen osa modernia web-kehitystä. Ota tämä teknologia omaksesi, kokeile sen ominaisuuksia ja avaa uusi joustavuuden taso responsiivisissa suunnitelmissasi. Tämä lähestymistapa mahdollistaa paremman komponenttien uudelleenkäytettävyyden, ylläpidettävyyden ja intuitiivisemman suunnitteluprosessin, mikä tekee siitä korvaamattoman hyödyn front-end-kehittäjille maailmanlaajuisesti. Siirtyminen säilökyselyihin kannustaa komponenttikeskeisempään lähestymistapaan suunnittelussa, mikä johtaa vankempiin ja mukautuvampiin verkkokokemuksiin käyttäjille kaikkialla maailmassa.